#include <ctime>
#include <unistd.h>
#include "ThreadPool.hpp"
#include "Task.hpp"
#include "log.hpp"

int main()
{
    srand((uint64_t)time(nullptr) ^ 0x84223);

    ThreadPool<Task>* tp = new ThreadPool<Task>();

    tp->run();  // 这里直接让线程池运行起来

    // 在线程池我们只实现了推送任务的接口,但是并没有生产任务,
    // 这里实现一下,最好重新写一个文件来实现任务和产生和处理,由于这里只是模拟一个简单的加法任务,就不过于封装了
    while (true)
    {
        // 生产任务
        int x = rand() % 100 + 1;
        usleep(1000);
        int y = rand() % 50 + 1;

        Task t(x, y, [](int x, int y)->int{
            return x + y;
        });

        logMessage(DEBUG, "任务制作完成: %d + %d = ?", x, y);

        tp->PushTask(t); // 把任务通过线程池的接口推送进去
        sleep(1);
    }

    return 0;
}
